import { app, BrowserWindow } from 'electron'
// import path from 'path';
// 用于设置渲染进程开发者调试工具的警告，这里设置为 true 就不会再显示任何警告了。
// 防止恶意第三方就有可能使用 Node.js 的内置模块伤害最终用户 
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = "true";
// 是否是生产环境
const isPackaged = app.isPackaged;

const createWindow = () => {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    icon: __dirname + '/logo.png',
    webPreferences: {
      nodeIntegration: true,
      webSecurity: false,
      allowRunningInsecureContent: true,
      contextIsolation: false,
      webviewTag: true,
      spellcheck: false,
      disableHtmlFullscreenWindowResize: true,
    }
  })
  // 开发环境下，打开开发者工具。
  if (!isPackaged) {
    mainWindow.webContents.openDevTools({ mode: "undocked" });
  }
  // 使用 loadFile 加载 electron/index.html 文件
  // mainWindow.loadFile(path.join(__dirname, "./index.html"));
  // 使用 loadURL 加载 http://localhost:3004 ，也就是我们刚才创建的 Vue 项目地址
  // 3004 改为你 Vue 项目的端口号
  // mainWindow.loadURL("http://localhost:3004/");
  
  // if (!isPackaged) {
    if (process.argv[2]) {
  mainWindow.loadURL(process.argv[2]);
  } else {
    // mainWindow.loadURL(`file://${path.join(__dirname, "../dist/index.html")}`);
    mainWindow.loadFile('index.html');
  }
  
}

// 在应用准备就绪时调用函数
app.whenReady().then(() => {
  createWindow()
  app.on("activate", () => {
    // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
    // 打开的窗口，那么程序会重新创建一个窗口。
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
})
// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此，通常对程序和它们在任务栏上的图标来说，应当保持活跃状态，直到用户使用 Cmd + Q 退出。
// app.on("window-all-closed", () => {
//   if (process.platform !== "darwin") app.quit();
// });

if (!isPackaged) {
// 证书的链接验证失败时，触发该事件
app.on(
  "certificate-error",
  // @ts-ignore
  function (event, webContents, url, error, certificate, callback) {
    event.preventDefault();
    callback(true);
  }
);
}